home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 2000 July / macformat-092.iso / Fireworks 3 / Settings / HTML Code / Dreamweaver 3 / metafile.htt next >
Encoding:
Text File  |  1999-11-19  |  10.7 KB  |  410 lines

  1. // Fireworks Dreamweaver 3.0 Metafile HTML & JavaScript.
  2. // Version 3.0 09SEP99
  3.  
  4. // Note - we never write comments or header info to the metafile.  jba.
  5.  
  6. // Declare variables for processing Behaviors.    
  7. var kActionStatusMessage = 1;
  8. var kActionSwapImage = 2;
  9. var kActionButtonDown = 4;
  10. var kActionSwapImageRestore = 5;
  11. var kActionButtonHighlight = 6; 
  12. var kActionButtonRestore = 7;
  13.  
  14. var kEventMouseOver = 0;
  15. var kEventOnClick = 1;
  16. var kEventMouseOut = 2;
  17. var kEventOnLoad = 3;
  18.  
  19. var hasStatusMessage = false;
  20. var hasSwap = false;
  21. var hasDown = false;
  22. var hasRestore = false;
  23.  
  24.  
  25.  
  26. // Function cellName determines the name for the image in a particular table cel
  27. // cellName is based off of the slice name if one was specified. Otherwise the
  28. // Base file name from the export dialog is used.
  29. function CellName(curSlices, row, col) {
  30.     var curSlice = curSlices[row][col];
  31.     var cellName = "";
  32.     if (curSlice && curSlice.getFrameFileName(0)) {
  33.         cellName = curSlice.getFrameFileName(0).toString();
  34.         curSlice.setFrameFileName(0, cellName);
  35.         // remove illegal characters
  36.         cellName = cellName.replace(/\W/g, "");
  37.         // if it starts with a number, add N to the front.
  38.         if (cellName == "") cellName = "n" + exportDoc.imagename + "_" + (row+1) + "_" + (col+1);
  39.         if (cellName.search(/\d/) == 0) {
  40.             cellName = "n"+cellName;
  41.         }
  42.     }
  43.     if (cellName!="") return(cellName);     
  44.  
  45.     var prefix;
  46.     if (!curSlices) return("nullCellName");
  47.     if (curSlices.id == 0) {
  48.         prefix = "";
  49.     } else {
  50.         prefix = curSlices.id+"_";
  51.     }
  52.     var suffix="";
  53.     if (curSlices.numRows > 1 || curSlices.numColumns > 1) {
  54.         suffix = "_" + (row+1) + "_" + (col+1);
  55.     }
  56.     cellName = "n" + prefix + exportDoc.imagename + suffix;
  57.     return(cellName);
  58. }
  59.  
  60. // Determine and process Behaviors in the document.
  61. function ProcessEvent(theCurBehaviors, targetEvent) {
  62.     // Declare variable for processing Behaviors.
  63.     var javaScript = "";
  64.     var stat = false;
  65.     var eraseStatOnMouseOut = false;
  66.     var swapImage = "";
  67.     var nbHighlight = "";
  68.     var nbHighlightPreload = false;
  69.     var nbDown = "";
  70.     var nbDownPreload = false;
  71.     var swap = "";
  72.     var swapRestore = false;
  73.     var buttonRestore = false;
  74.     
  75.     // Translate Behaviors into JavaScript.
  76.     for (var i=0; i<theCurBehaviors.numberOfBehaviors; i++) {
  77.         curBehavior = theCurBehaviors[i];
  78.         
  79.         if (curBehavior.ignoreFlag) continue;
  80.         // Check for erase on mouse out status messages.
  81.         if (curBehavior.action == kActionStatusMessage) {
  82.             if (curBehavior.restoreOnMouseout) eraseStatOnMouseOut=true;
  83.         }
  84.         
  85.         if (curBehavior.event != targetEvent) continue;
  86.         
  87.         if (curBehavior.action == kActionStatusMessage) {
  88.             var statMsg = curBehavior.statusText;
  89.             var curStat = "";
  90.             curStat = "MM_displayStatusMsg('" + statMsg + "');";
  91.             javaScript += curStat;
  92.             stat = true;
  93.             continue;
  94.         }
  95.         if (curBehavior.action == kActionSwapImageRestore) {
  96.             swapRestore = true;
  97.             continue;
  98.         }
  99.         
  100.         if (curBehavior.action == kActionButtonRestore) {
  101.             buttonRestore = true;
  102.             continue;
  103.         }
  104.         
  105.         var swapRow = curBehavior.targetRowNum;
  106.         var swapCol = curBehavior.targetColumnNum;
  107.         var swapFrame = curBehavior.targetFrameNum; 
  108.         var swapTable = curBehavior.targetTable;
  109.         var fileName;
  110.         if (!swapTable) {
  111.             /* Not a swap behavior, so continue. */
  112.             continue;
  113.         }
  114.  
  115.         if (curBehavior.hasHref) {
  116.             fileName = curBehavior.href;
  117.         } else {
  118.             fileName = swapTable.imagesDirPath + swapTable[swapRow][swapCol].getFrameFileName(swapFrame) + swapTable[swapRow][swapCol].imageSuffix;
  119.         }
  120.  
  121.  
  122.         var cellName = CellName(swapTable, swapRow,swapCol);
  123.         
  124.         // Translate button Behaviors into JavaScript.
  125.         if (curBehavior.action == kActionButtonDown) {
  126.             //MM_nbGroup(event, groupName, imgName, downSrc...preloadMarker)
  127.             nbDown += "'" + cellName + "','" + fileName + "',";
  128.             if (curBehavior.preload) nbDownPreload = true;
  129.             continue;
  130.         }
  131.         // Translate button Behaviors into JavaScript.
  132.         if (curBehavior.action == kActionButtonHighlight) {
  133.             var highlightName = "";
  134.             if (curBehavior.downHighlight) {
  135.                 if (curBehavior.hasDhHref) {
  136.                     highlightName = curBehavior.dhHref;
  137.                 } else {
  138.                     var f = curBehavior.dhTargetFrameNum;
  139.                     highlightName = swapTable.imagesDirPath + swapTable[swapRow][swapCol].getFrameFileName(f) + swapTable[swapRow][swapCol].imageSuffix
  140.                 }
  141.             }            
  142.             nbHighlight += "'" + cellName + "','" + fileName + "','" + highlightName +"',";
  143.             if (curBehavior.preload) nbHighlightPreload = true;
  144.             continue;
  145.         }
  146.         // Translate Swap Image Behaviors into JavaScript.
  147.         if (curBehavior.action == kActionSwapImage) {
  148.             swap += "'" +cellName +"','','" + fileName + "',";
  149.             continue;
  150.         }        
  151.     }
  152.      if (nbDown != "") {
  153.         if (targetEvent == kEventOnLoad) {
  154.             javaScript += "MM_nbSetInitDown('navbar1'," + nbDown
  155.         } else {
  156.             javaScript += "MM_nbGroup('down','navbar1'," + nbDown
  157.         }
  158.         if (nbDownPreload) {
  159.             javaScript += "1);";
  160.         } else {
  161.             javaScript += "0);";
  162.         }
  163.     }
  164.      if (nbHighlight != "") {
  165.         javaScript += "MM_nbGroup('over'," + nbHighlight
  166.         if (nbHighlightPreload) {
  167.             javaScript += "1);";
  168.         } else {
  169.             javaScript += "0);";
  170.         }
  171.     }
  172.     if (swap != "") {
  173.         javaScript += "MM_swapImage(" + swap + "1);";
  174.     }
  175.     if (swapRestore) {
  176.         javaScript += "MM_swapImgRestore();";
  177.     }
  178.     if (buttonRestore) {
  179.         javaScript += "MM_nbGroup('out');";
  180.     }
  181.     // Erase status bar message onMouseOut.
  182.     if (eraseStatOnMouseOut && targetEvent == kEventMouseOut) {
  183.         javaScript += "MM_displayStatusMsg(' ');" ;
  184.         stat = true;
  185.     }
  186.     
  187.     if (stat) javaScript += "return document.MM_returnValue";
  188.     return(javaScript);
  189. }
  190.  
  191.  
  192. // Determine and process Behaviors in the document.
  193. function ProcessBehavior(theCurBehaviors) {
  194.     
  195.     javaOver = ProcessEvent(theCurBehaviors, kEventMouseOver);
  196.     javaOut = ProcessEvent(theCurBehaviors, kEventMouseOut);
  197.     javaClick = ProcessEvent(theCurBehaviors, kEventOnClick);
  198.     if (javaOver != "" || javaOut != "" || javaClick != "") {
  199.         return(true);
  200.     }
  201.     return(false);
  202. }
  203.  
  204.  
  205. var curCol = 0;
  206. var curRow = 0;
  207. curCol = exportDoc.startColumn;
  208. curRow = exportDoc.startRow;
  209.         
  210. var curSlice = slices[curRow][curCol];
  211.  
  212. // Write link if slice has URL attached.
  213. var href = "href=\"#\"";
  214. var hasHref = curSlice.hasHref;
  215. var abortHref = false;
  216. if (curSlice.hasHref) {
  217.     href = "href=\"";
  218.     href += curSlice.href;
  219.     href += "\"";
  220.     if (curSlice.hasTargetText) {
  221.         href += " target=\"";
  222.         href += curSlice.targetText;
  223.         href += "\"";
  224.     }
  225. }
  226.  
  227. var cellName = CellName(slices, curRow, curCol);
  228. var anchorTagOpen = false;
  229.  
  230. // If the slice has image map hotspots and has a url attached to it,
  231. // ignore the url here and move it into the image map.
  232. if (curSlice.hasImage && curSlice.hasImagemap) {
  233.     abortHref = true;  // we will put the href in the imagemaps.
  234. }
  235.  
  236. // Write rollover and swap image events.
  237. if (!abortHref) {
  238.     var behaviors = curSlice.behaviors;
  239.     var gotJavascript = ProcessBehavior(behaviors);
  240.  
  241.     if ( gotJavascript || curSlice.hasHref) {
  242.           WRITE_HTML("<a ");
  243.         anchorTagOpen = true;
  244.         WRITE_HTML(href);
  245.  
  246.         if (javaOut != "") {
  247.             WRITE_HTML(" onMouseOut=\"", javaOut, "\" ");
  248.         }
  249.         if (javaOver != "") {
  250.             WRITE_HTML(" onMouseOver=\"", javaOver, "\" ");
  251.         }
  252.         if (javaClick != "") {
  253.             WRITE_HTML(" onClick=\"", javaClick, "\" ");
  254.         }
  255.         WRITE_HTML(">");
  256.     }
  257. }
  258.  
  259. // Place image.
  260. if (curSlice.hasImage) {
  261.     var imageName = curSlice.getFrameFileName(0); 
  262.     var altText = "";
  263.     if (curSlice.hasAltText) {
  264.         altText = curSlice.altText;
  265.     } else {
  266.         altText = exportDoc.altText;
  267.     }
  268.     
  269.     // Assemble info for image tag.
  270.     // Ex: <img name="n_03_02" src="File_03_02.gif" width="79" height="71" border="0"
  271.     WRITE_HTML("<img name=\"", cellName, "\" src=\"",
  272.         slices.imagesDirPath, imageName, curSlice.imageSuffix, "\" width=\"",
  273.         curSlice.width,"\" height=\"", curSlice.height, "\" border=\"0\"");
  274.     
  275.     // Write image map name.
  276.     // Ex: usemap="#base_r1_c2"
  277.     if (curSlice.hasImagemap) {     
  278.         WRITE_HTML(" usemap=\"#", imageName, "\""); 
  279.     }
  280.     
  281.     // Write alt text.
  282.     if (altText != "") {
  283.         WRITE_HTML(" alt=\"", altText, "\"");
  284.     }
  285.     WRITE_HTML(">");    
  286. }
  287.  
  288. if (anchorTagOpen) {
  289.     WRITE_HTML("</a>");    
  290. }
  291. if (curSlice.hasImagemap) {
  292.     
  293.     // Write the image map.
  294.     WRITE_HTML("<map name=\"", curSlice.getFrameFileName(0), "\">\n");
  295.  
  296.     var i = 0;
  297.     var imagemap = curSlice.imagemap;
  298.     while (i < imagemap.numberOfURLs) {
  299.         var curImagemap = imagemap[i];
  300.  
  301.         var behaviors = curImagemap.behaviors;
  302.  
  303.         if (behaviors.numberOfBehaviors==0) {
  304.             var behaviors = curSlice.behaviors;
  305.         }
  306.          javaOver = "";
  307.         javaOut = "";
  308.         javaClick = "";
  309.         var gotJavascript = ProcessBehavior(behaviors);
  310.  
  311.         // Write the area tag with shape definitions.
  312.         WRITE_HTML("<area shape=\"");
  313.         WRITE_HTML(curImagemap.shape); // Shapes are rect poly and circle
  314.         WRITE_HTML("\" coords=\"");
  315.         for (var j=0; j<curImagemap.numCoords; j++) {
  316.             if (j>0) WRITE_HTML(",");
  317.             // polygon has n coords.
  318.             // rect has 2 coords, topLeft, and botomRight.
  319.             // circle has one coord, center; plus radius.
  320.             WRITE_HTML((curImagemap.xCoord(j)-curSlice.left), ",", (curImagemap.yCoord(j)-curSlice.top)); 
  321.         }
  322.         if (curImagemap.shape == "circle") {
  323.             // Write the radius for circle hotspots.
  324.             WRITE_HTML(", ", curImagemap.radius);
  325.         }
  326.         WRITE_HTML("\"");
  327.         var href = " href=\"#\"";
  328.         if (curImagemap.hasHref) {
  329.             href = " href=\"";
  330.             href += curImagemap.href;
  331.             href += "\"";
  332.             if (curImagemap.hasTargetText) {
  333.                 href += " target=\"";
  334.                 href += curImagemap.targetText;
  335.                 href += "\"";
  336.             }
  337.         }
  338.  
  339.         WRITE_HTML(href);
  340.         
  341.         // Write alt text for hotspot.
  342.         var altText = "";
  343.         if (curImagemap.hasAltText) {
  344.             altText = curImagemap.altText;
  345.         } else {
  346.             altText = exportDoc.altText;
  347.         }
  348.  
  349.         if (altText!="") {
  350.             WRITE_HTML(" title=\"", altText, "\"");
  351.             WRITE_HTML(" alt=\"", altText, "\"");
  352.         }
  353.  
  354.         // Write rollover and swap image behaviors.
  355.         if (javaOut != "") {
  356.             WRITE_HTML(" onMouseOut=\"", javaOut, "\" ");
  357.         }
  358.         if (javaOver != "") {
  359.             WRITE_HTML(" onMouseOver=\"", javaOver, "\" ");
  360.         }
  361.         if (javaClick != "") {
  362.             WRITE_HTML(" onClick=\"", javaClick, "\" ");
  363.         }
  364.  
  365.         WRITE_HTML(" >\n");
  366.         i++;
  367.     } 
  368.     var behaviors = slices[curRow][curCol].behaviors;
  369.      javaOver = "";
  370.     javaOut = "";
  371.     javaClick = "";
  372.     var gotJavascript = ProcessBehavior(behaviors);
  373.     
  374.     // If the current slice had a URL attached, it was moved and written here.
  375.     if (gotJavascript || curSlice.hasHref) {
  376.         WRITE_HTML("<area shape=\"rect\" coords=\"0,0, ", curSlice.width, ",", curSlice.height, "\" ");
  377.         var href="#";
  378.         if (curSlice.hasHref) {
  379.             href = curSlice.href;
  380.         }
  381.         WRITE_HTML("href=\"", href, "\"");
  382.  
  383.         if (curSlice.hasTargetText) {
  384.             WRITE_HTML("\n  target=\"", slices[curRow][curCol].targetText, "\"");
  385.         }
  386.         if (javaOut != "") {
  387.             WRITE_HTML(" onMouseOut=\"", javaOut, "\" ");
  388.         }
  389.         if (javaOver != "") {
  390.             WRITE_HTML(" onMouseOver=\"", javaOver, "\" ");
  391.         }
  392.         if (javaClick != "") {
  393.             WRITE_HTML(" onClick=\"", javaClick, "\" ");
  394.         }
  395.         var altText = "";
  396.         if (curSlice.hasAltText) {
  397.             altText = curSlice.altText;
  398.         } else {
  399.             altText = exportDoc.altText;
  400.         }
  401.         if (altText!="") {
  402.             WRITE_HTML(" title=\"", altText, "\"");
  403.             WRITE_HTML(" alt=\"", altText, "\"");
  404.         }
  405.         WRITE_HTML(">\n");
  406.     }    
  407.  
  408.     WRITE_HTML("</map>\n")
  409. }
  410.